package com.wang.music.util;

import cn.hutool.core.lang.UUID;
import com.wang.music.config.MinioPropertites;
import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.apache.velocity.shaded.commons.io.FilenameUtils;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

/**
 * 文件工具类
 * @author 子凡
 */
public class FileUtils {

    /**
     * 整体处理文件上传
     * @param url 上传地址
     * @param pic 文件
     * @return 返回一个生成的新的文件命
     */
    public static String upload (String url, MultipartFile pic){
        HashMap<String, Object> resMap = new HashMap<>();
        //文件姓名
        String filename = pic.getOriginalFilename();
        //获取文件后缀
        String ext = "." + FilenameUtils.getExtension(filename);
        //生成新的名字 uuid命名
        String newName = UUID.randomUUID().toString() + ext;
        try {
            //ResourceUtils工具类可以动态的获取项目的根路径
            String path = ResourceUtils.getURL("classpath:").getPath() + url;
            File file = new File(path);
            if(!file.exists()){
                file.mkdirs();
            }
            //文件上传
            pic.transferTo(new File(file,newName));

        } catch (IOException e) {
            e.printStackTrace();
        }
        return newName;
    }

    /**
     *获取一个MinioClient
     * @param minioPropertites 配置
     */
    public static MinioClient getMinioClient (MinioPropertites minioPropertites){
        MinioClient minioClient = null;
        try {
            minioClient = new MinioClient(minioPropertites.getUrl(), minioPropertites.getAccessKey(), minioPropertites.getSecretKey());
        } catch (InvalidEndpointException e) {
            e.printStackTrace();
        } catch (InvalidPortException e) {
            e.printStackTrace();
        }
        return minioClient;
    }

}
